#!/usr/bin/env bash

set -e

CIS_X_HOME=$(realpath $(dirname $0)/../../..)
CIS_X_CORE_HOME=$(realpath $(dirname $0)/..)
PATH=$CIS_X_CORE_HOME/bin:$PATH

SAMPLE_ID=$1
ROOTDIR=$2
HIGH20=$3
CNV_LOH=$4
RNABAM=$5
FPKM_MATRIX=$6
SNVINDEL_IN=$7
SV_IN=$8
CNA_IN=$9
DISEASE=${10}
CNV_LOH_ACTION=${11}
COVG_WGS=${12}
COVG_RNA=${13}
THRESH_CANDIDATE_FPKM=${14}

if [ $# -lt 14 ]; then
    basename $0
    echo
    echo "USAGE:"
    echo "    cis-X run <sample-id> <results-dir> <markers> <cnv-loh> <bam> <fpkm-matrix> <snv-indel> <sv> <cna> <disease> <cnv-loh-action> <min coverage in WGS> <min coverage in RNA-seq> <FPKM threshold for nominate cis-activated candidate>"
    echo
    echo "ARGS:"
    echo "    <sample-id>       Sample ID"
    echo "    <results-dir>     Output directory"
    echo "    <markers>         Path to single nucleotide markers"
    echo "    <cnv-loh>         Path to CNV/LOH regions"
    echo "    <bam>             Path to a RNA-Seq BAM (index must be in same directory)"
    echo "    <fpkm-matrix>     Path to gene expression table"
    echo "    <snv-indel>       Path to somatic SNV/indels"
    echo "    <sv>              Path to somatic SVs"
    echo "    <cna>             Path to somatic CNVs"
    echo "    <disease>         Disease name"
    echo "    <cnv-loh-action>  Action of markers in CNV/LOH regions, either keep or drop"
    echo "    <min coverage in WGS>          Minimal coverage in WGS to include a heterozygous marker"
    echo "    <min coverage in RNA-seq>      Minimal coverage in RNA-seq to include a heterozygous marker"
    echo "    <fpkm threshold for candidate> FPKM threshold for nominate cis-activated candidate"
    exit 1
fi

echo "INFO: $(date): cis-X-run: start"

WORKDIR=$ROOTDIR/$SAMPLE_ID/working_space
mkdir -p $WORKDIR
cd $WORKDIR

SNV4_OUT="$WORKDIR/$SAMPLE_ID.snv4.txt"
HET_OUT="$WORKDIR/$SAMPLE_ID.heterozygous.markers.txt"

echo "INFO: $(date): cis-X-run: getting markers"
cis-X-mark $SAMPLE_ID $HIGH20 $CNV_LOH $SNV4_OUT $HET_OUT $COVG_WGS

echo "INFO: $(date): cis-X-run: building matrices"
MATRIX_OUT="$WORKDIR/matrix_combined_matrix_simple.tab"
cis-X-build-matrix $RNABAM $SNV4_OUT $WORKDIR $MATRIX_OUT

echo "INFO: $(date): cis-X-run: running allelic specific expression tests"
ASE_RESULT_MARKER="$WORKDIR/$SAMPLE_ID.ase.combine.WGS.RNAseq.goodmarkers.binom.txt"
ASE_RESULT_GENE="$WORKDIR/$SAMPLE_ID.ase.gene.model.fdr.txt"
ASE_RESULT_RUN="$WORKDIR/$SAMPLE_ID.ase.candidates.runs.txt"
cis-X-ase $SAMPLE_ID $WORKDIR $HET_OUT $MATRIX_OUT $ASE_RESULT_MARKER $ASE_RESULT_GENE $ASE_RESULT_RUN $CNV_LOH_ACTION $COVG_RNA

echo "INFO: $(date): cis-X-run: running outlier high expression tests"
OHE_RESULT="$WORKDIR/$SAMPLE_ID.OHE.results.txt"
cis-X-test-outliers $SAMPLE_ID $DISEASE $FPKM_MATRIX $OHE_RESULT

echo "INFO: $(date): cis-X-run: nominating candidates"
CANDIDATES_RESULT="$WORKDIR/$SAMPLE_ID.cisActivated.candidates.txt"
CANDIDATES_RESULT_RUN="$WORKDIR/$SAMPLE_ID.cisActivated.candidates.byRuns.txt"
cis-X-nominate $SAMPLE_ID $ASE_RESULT_GENE $OHE_RESULT $CANDIDATES_RESULT $THRESH_CANDIDATE_FPKM $ASE_RESULT_RUN $CANDIDATES_RESULT_RUN

echo "INFO: $(date): cis-X-run: screening candidates"
SV_CAN="$SAMPLE_ID.sv.candidates.txt"
CNA_CAN="$SAMPLE_ID.cna.candidates.txt"
SNVINDEL_CAN="$SAMPLE_ID.snvindel.candidates.txt"
cis-X-screen $SAMPLE_ID $CANDIDATES_RESULT $CANDIDATES_RESULT_RUN $SV_IN $CNA_IN $SNVINDEL_IN $FPKM_MATRIX $WORKDIR $SV_CAN $CNA_CAN $SNVINDEL_CAN

RESDIR="$ROOTDIR/$SAMPLE_ID"

cp $ASE_RESULT_GENE $RESDIR
cp $ASE_RESULT_MARKER $RESDIR
cp $OHE_RESULT $RESDIR
cp $CANDIDATES_RESULT $RESDIR
cp $CANDIDATES_RESULT_RUN $RESDIR
cp $SNVINDEL_CAN $RESDIR
cp $CNA_CAN $RESDIR
cp $SV_CAN $RESDIR

echo "INFO: $(date): cis-X-run: done"
